#!/usr/bin/env python3
import os
import shutil
import time

def delete_old_files(directory, days, log_file_path, dmp_limit):
    """
    删除指定目录中所有超过指定天数的文件，并记录日志。
    如果 .dmp 文件数量小于 dmp_limit，则不执行删除操作。

    :param directory: 要检查的目录路径
    :param days: 文件超过这个天数将被删除
    :param log_file_path: 日志文件的路径
    :param dmp_limit: .dmp 文件数量的限制
    """
    current_time = time.time()
    with open(log_file_path, "a") as log_file:  # 打开日志文件以追加模式
        # 检查 .dmp 文件数量是否小于限制
        dmp_count = sum(1 for file in os.listdir(directory) if file.endswith('.dmp'))
        if dmp_count < dmp_limit:
            log_file.write(f"Skipped deletion: .dmp file count is less than {dmp_limit}.\n")
            print(f"Skipped deletion: .dmp file count is less than {dmp_limit}.")
            return

        for filename in os.listdir(directory):
            file_path = os.path.join(directory, filename)
            if os.path.isfile(file_path):
                file_age = current_time - os.path.getmtime(file_path)
                if file_age > days * 86400:  # 将天数转换为秒
                    try:
                        os.remove(file_path)
                        log_file.write(f"Deleted file: {file_path}\n")  # 记录删除操作
                        print(f"Deleted file: {file_path}")
                    except Exception as e:
                        log_file.write(f"Error deleting file {file_path}: {e}\n")  # 记录错误
                        print(f"Error deleting file {file_path}: {e}")

# 使用示例
# 删除 /path/to/directory 中所有超过 30 天的文件，并记录到 /path/to/logfile.log
# 如果 .dmp 文件数量小于 60，则不执行删除操作
delete_old_files("/path/to/directory", 30, "/path/to/logfile.log", 60)